package com.icongyou.enterprise.course_detail.controller;

import com.icongyou.enterprise.common.result.Result;
import com.icongyou.enterprise.course_detail.entity.dto.CourseDetailRequestDTO;
import com.icongyou.enterprise.course_detail.entity.vo.CourseDetailVO;
import com.icongyou.enterprise.course_detail.service.CourseDetailService;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

/**
 * 课程详情Controller
 */
@RestController
@RequestMapping("/api/course-detail")
@RequiredArgsConstructor
public class CourseDetailController {

    private final CourseDetailService courseDetailService;

    /**
     * 获取学生课程详情
     * 包括课程基本信息、任务列表、每个任务的详细信息（名称、描述、成绩、排名、贡献度、核心成果等）
     *
     * @param requestDTO 请求参数（学生ID和课程ID）
     * @return 课程详情
     */
    @PostMapping("/get")
    public Result<CourseDetailVO> getCourseDetail(@Validated @RequestBody CourseDetailRequestDTO requestDTO) {
        try {
            CourseDetailVO courseDetail = courseDetailService.getCourseDetail(
                    requestDTO.getStudentId(),
                    requestDTO.getCourseId()
            );
            return Result.success(courseDetail);
        } catch (Exception e) {
            return Result.error("获取课程详情失败: " + e.getMessage());
        }
    }

    /**
     * 获取学生课程详情（GET方式，使用路径参数）
     *
     * @param studentId 学生ID
     * @param courseId  课程ID
     * @return 课程详情
     */
    @GetMapping("/get/{studentId}/{courseId}")
    public Result<CourseDetailVO> getCourseDetailByPath(
            @PathVariable("studentId") String studentId,
            @PathVariable("courseId") String courseId) {
        try {
            CourseDetailVO courseDetail = courseDetailService.getCourseDetail(studentId, courseId);
            return Result.success(courseDetail);
        } catch (Exception e) {
            return Result.error("获取课程详情失败: " + e.getMessage());
        }
    }
}
